﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ComponentModel;
using System.Data;
using System.Windows.Forms;
using System.Drawing;
using fideeraSoft.Entities;

namespace fideeraSoft.Utils
{
    class MetodosGenerales
    {
        public static int calcularCenterWidth(int outpane, int tamanioComponent)
        {
            return ((outpane / 2) - (tamanioComponent / 2));
        }

        public static DataTable ConvertToDataTable<T>(IList<T> data)
        {
            PropertyDescriptorCollection properties =TypeDescriptor.GetProperties(typeof(T));
            
            DataTable table = new DataTable();

            foreach (PropertyDescriptor prop in properties)
                table.Columns.Add(prop.Name, Nullable.GetUnderlyingType(prop.PropertyType) ?? prop.PropertyType);
            foreach (T item in data)
            {
                DataRow row = table.NewRow();
                foreach (PropertyDescriptor prop in properties)
                    row[prop.Name] = prop.GetValue(item) ?? DBNull.Value;
                table.Rows.Add(row);
            }
            return table;

        }

        public static Panel crearPanelConImagen(Size size)
        {
            Image i = Properties.Resources.prina;
            Panel p = new Panel();
            
            p.BackgroundImageLayout = ImageLayout.Stretch;

            p.Size = new Size(size.Width, size.Height);

            
            p.BackgroundImage = i;

            return p;
        }

        public static Panel cargarImagenEnPanel(Panel p)
        {
            Image i = Properties.Resources.prina;
            
            p.BackgroundImageLayout = ImageLayout.Stretch;
            
            p.BackgroundImage = i;

            return p;
        }

        public static Usuario getUsuarioActual()
        {
            Usuario usuario = new Usuario();

            if (UsuarioLoggin.idUsuario != null) usuario.IdUsuario = UsuarioLoggin.idUsuario; else throw new Exception("ERROR - USUARIO SIN ID");

            //string.IsNullOrWhiteSpace(UsuarioLoggin.apellido) ? usuario.Apellido = "" : usuario.Apellido = UsuarioLoggin.apellido; 

            if (!string.IsNullOrWhiteSpace(UsuarioLoggin.apellido)) usuario.Apellido = UsuarioLoggin.apellido; else throw new Exception("ERROR - USUARIO SIN APELLIDO");

            if (!string.IsNullOrWhiteSpace(UsuarioLoggin.dni)) usuario.Dni = UsuarioLoggin.dni; else throw new Exception("ERROR - USUARIO SIN DNI");

            if (!string.IsNullOrWhiteSpace(UsuarioLoggin.username)) usuario.Username = UsuarioLoggin.username; else throw new Exception("ERROR - USUARIO SIN USER NAME");

            if (!string.IsNullOrWhiteSpace(UsuarioLoggin.email)) usuario.Email = UsuarioLoggin.email; else throw new Exception("ERROR - USUARIO SIN EMAIL");

            if (!string.IsNullOrWhiteSpace(UsuarioLoggin.jerarquia)) usuario.Jerarquia = UsuarioLoggin.jerarquia; else throw new Exception("ERROR - USUARIO SIN JERARQUÍA");

            if (!string.IsNullOrWhiteSpace(UsuarioLoggin.nombre)) usuario.Nombre = UsuarioLoggin.nombre; else throw new Exception("ERROR - USUARIO SIN NOMBRE");

            if (!string.IsNullOrWhiteSpace(UsuarioLoggin.pass)) usuario.Pass = UsuarioLoggin.pass; else throw new Exception("ERROR - USUARIO SIN PASS");

            if (!string.IsNullOrWhiteSpace(UsuarioLoggin.tel)) usuario.Tel = UsuarioLoggin.tel; else usuario.Tel = "";

            if (!string.IsNullOrWhiteSpace(UsuarioLoggin.cel)) usuario.Cel = UsuarioLoggin.cel; else usuario.Cel = "";

            return usuario;

        }
    }
}
